1193번 분수찾기
Day8 8단계 20231026
(해결 날짜 : 20231027)
( 큰 아이디어 틀은 다른 사람의 아이디어를 참고했다. 상세 메커니즘은 이해 못해서 내 방법대로 구성했다.)
- 참고한 아이디어 : https://st-lab.tistory.com/74
- 분수들을 오른쪽에서 왼쪽으로 내려가는 방향의 대각선으로 나누면, 분자와 분모의 합이 같은 대각선 내에선 모두 동일하다.
- 내 풀이
- 합이 짝수일 때 위쪽에 있다면 오른쪽으로, 합이 홀수일 때 왼쪽에 있다면 아래로 인덱스가 1 증가한다.
- 합이 짝수일 때 위쪽에 없다면 대각선 오른쪽 위 방향으로, 합이 홀수일 때 왼쪽에 없다면 대각선 왼쪽 아래 방향으로 인덱스가 1 증가한다.
- 분자를 x, 분모를 y로 바꿔서 행렬로 생각하였고, 위 규칙에 따라 인덱스를 추가했다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int x = 1;
int y = 1;
int index = 1;
int sum = x + y;
br.close();
while (true) {
if (index == n) { break; }
if (sum % 2 != 0) {
if (y == 1) {
x++;
sum = x + y;
index++;
} else if (y != 1) {
for (int i = 0; i < sum - 2; i++) {
x++;
y--;
index++;
if (index == n) { break; }
}
sum = x + y;
}
} else {
if (x == 1) {
y++;
sum = x + y;
index++;
} else if (x != 1) {
for (int i = 0; i < sum - 2; i++) {
x--;
y++;
index++;
if (index == n) { break; }
}
sum = x + y;
}
}
}
System.out.println(x + "/" + y);
}
}